]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
UnlockDialog: allow going back to the lock screen by pressing escape
authorGiovanni Campagna <gcampagna@src.gnome.org>
Fri, 3 Aug 2012 17:26:30 +0000 (19:26 +0200)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Fri, 3 Aug 2012 17:54:48 +0000 (19:54 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=681143

js/ui/modalDialog.js
js/ui/unlockDialog.js

index 84fca17edfc480635aaf8093bddc1530c66ed319..60f08e2d5b52c6eb86b6ce84de3e1367e3333b36 100644 (file)
@@ -56,7 +56,7 @@ const ModalDialog = new Lang.Class({
         this._group.connect('destroy', Lang.bind(this, this._onGroupDestroy));
 
         this._actionKeys = {};
-        this._group.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
+        this._group.connect('key-release-event', Lang.bind(this, this._onKeyReleaseEvent));
 
         this._backgroundBin = new St.Bin();
         this._group.add_actor(this._backgroundBin);
@@ -108,6 +108,10 @@ const ModalDialog = new Lang.Class({
         this._group.destroy();
     },
 
+    setActionKey: function(key, action) {
+        this._actionKeys[key] = action;
+    },
+
     setButtons: function(buttons) {
         let hadChildren = this._buttonLayout.get_children() > 0;
 
@@ -175,12 +179,16 @@ const ModalDialog = new Lang.Class({
 
     },
 
-    _onKeyPressEvent: function(object, keyPressEvent) {
-        let symbol = keyPressEvent.get_key_symbol();
+    _onKeyReleaseEvent: function(object, event) {
+        let symbol = event.get_key_symbol();
         let action = this._actionKeys[symbol];
 
-        if (action)
+        if (action) {
             action();
+            return true;
+        }
+
+        return false;
     },
 
     _onGroupDestroy: function() {
index af07a726c5ed0ae969a7d05fe436f4804f21f7d9..5cbe2e5272a5bdfef66ecf3cc95e5d06b5ea90a4 100644 (file)
@@ -143,6 +143,7 @@ const UnlockDialog = new Lang.Class({
                            action: Lang.bind(this, this._doUnlock),
                            default: true };
         this.setButtons([this._okButton]);
+        this.setActionKey(Clutter.KEY_Escape, Lang.bind(this, this._escape));
 
         this._updateOkButton(false);
         this._reset();
@@ -202,6 +203,10 @@ const UnlockDialog = new Lang.Class({
         this.emit('failed');
     },
 
+    _escape: function() {
+        this._onVerificationFailed();
+    },
+
     _otherUserClicked: function(button, event) {
         this._userManager.goto_login_session();